<?php
require_once(INCPATH . "core/ioc/applicationcontext.inc.php");
require_once(MODULESPATH . "finance/finance.inc.php");

/**
 * 财经系统领域模型的接口。
 */
interface IBFinance extends IInjectEnable{
    /**
     * 向投资组合中添加证券。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @return Int 投资组合ID。
     */
    function addStock($symbol, $combinationId = -1);
    
    /**
     * 添加证券交易数据。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $type 交易类型。
     * @param Int $date 交易日期。
     * @param Int $quantity 证券数量。
     * @param Int $cost 证券总成本。
     * @param String $note 交易手记。
     */
    function addInvestment($symbol, $combinationId, $type, $date, $quantity, $cost, $note);
    
    /**
     * 获取用户的投资组合列表。
     * @return 用户的投资组合列表。
     */
    function getUserCombinations();
    
    /**
     * 获取证券类型的列表。
     * @return 证券类型的列表。
     */
    function getStockTypes();
    
    /**
     * 获取证券市场的列表。
     * @return 证券市场的列表。
     */
    function getStockMarkets();
    
    /**
     * 获取证券交易类型的列表。
     * @return 证券交易类型的列表。
     */
    function getInvestmentTypes();
}    
    
/**
 * 财经系统业务层证券类的接口。
 */
interface IBStock extends IInjectEnable{    
    /**
     * 获取证券列表。
     * @param String $market 证券市场编码。
     * @param String $key 查询的关键字。
     * @return 证券列表。
     */
    function getStocks($market = null, $key = "");
}
   
/**
 * 财经系统业务层投资组合类的接口。
 */
interface IBCombination extends IAdjustUserData, IInjectEnable{    
    /**
     * 获取用户默认的投资组合ID。
     * @param Int $uid 用户ID。
     * @return 用户默认的投资组合ID。
     */
    function getUserDefaultCombinationId($uid);
    
    /**
     * 向投资组合中添加证券。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $uid 用户ID。
     * @return 是否操作成功。
     */
    function addStock($symbol, $combinationId, $uid);
    
    /**
     * 获取用户的投资组合列表。
     * @return 用户的投资组合列表。
     * @param Int $uid 用户ID。
     */
    function getUserCombinations($uid);
}
   
/**
 * 财经系统业务层证券投资类的接口。
 */
interface IBInvestment extends IAdjustUserData, IInjectEnable{    
    /**
     * 添加证券交易数据。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $uid 用户ID。
     * @param Int $type 交易类型。
     * @param Int $date 交易日期。
     * @param Int $quantity 证券数量。
     * @param Int $cost 证券总成本。
     * @param String $note 交易手记。
     */
    function addInvestment($symbol, $combinationId, $uid, $type, $date, $quantity, $cost, $note);
}
?>
